/*
 * Copyright 2008-2023 dexian.vip. All rights reserved.
 * Support: http://www.dexian.vip
 * License: http://www.dexian.vip/license
 */

package vip.dexian.admin.dao;

import vip.dexian.admin.entity.Department;
import vip.dexian.core.base.dao.BaseDao;

import java.util.List;

/**
 * 部门
 *
 * @author 挺好的 2023年05月31日 13:54
 */
public interface DepartmentDao extends BaseDao <Department, Long> {

    /**
     * 查找全部部门，将会根据上下级关系自动排序
     *
     * @return {@link vip.dexian.admin.entity.Department} 列表
     */
    List <Department> findAll ();

    /**
     * 根据parentId查找子部门，采用递归的方式（主要使用treePath）
     *
     * @param parentId
     *         上级部门id
     *
     * @return {@link vip.dexian.admin.entity.Department} 列表
     */
    List <Department> findChildren (Long parentId);

    /**
     * 是否包含子部门
     *
     * @param id
     *         部门id
     *
     * @return 指定的部门如果包含子部门，则返回true，否则返回false
     */
    boolean hasChildren (Long id);

}
